整数文字量

整数文字量有四种表面形式:十进制八进制十六进制字符文字量(A.3节)。十进制文字量用得最多,其形式如你所预期的

7 1234 976 12345601234567890

编译器应该能够对文字量过长,无法表示的情况给出警告。

0 开头后跟 x(0x) 的文字量是十六进制(以16作为数的基数),以 0 开头的文字量后面没有 x 的是八进制数(以8为基数)。例如,

decimal:            2    63    83
octal:        0     02   077   0123
hexadecimal:  0x0   0x2  0x3f  0x53

字符a、b、c、d、e、f与其大写形式等价,分别表示10、11、12、13、14、15。八进制和十六进制形式特别适合用于表示二进制位的模式。使用这些记法表示真正的数值则常常会使人感到意外。例如,在一台将 int 表示为16位二补码整数的机器上,0xffff 将是十进制数 -1。如果表示整数所采用的位数更多,它就会是 65535

后缀 U 可以用于显式地写出 unsigned int 型。类似地,后缀 L 可用于显式地写 long 文字量。例如,3是一个 int 型,3U 是一个 unsigned int 型,而 3L 是一个 long int 型。如果没有后缀,编译器就会基于文字量值的大小以及实现中整数的大小,为整数文字量确定一个适当的类型(C.4节)。

限制使用那些意义不明显的常量,只将它们用在给几个 const (5.4节)或者 枚举量(4.8节)初始化的表示中,这是一种很好的做法。

🔚